// numberToChinese.js

// 定义一个将数字转换为大写数字的函数
function toChineseNumber(value) {
    // 数字对应的大写数字
    const chineseNumbers = ['零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'];

    // 数字对应的单位
    const chineseUnits = ['', '拾', '佰', '仟', '万', '拾', '佰', '仟', '亿'];

    // 将输入的数字转换为浮点数
    const number = parseFloat(value);

    // 判断输入是否为有效数字
    if (isNaN(number)) {
        return '请输入有效的数字';
    }

    // 判断是否为整数
    const isInteger = Number.isInteger(number);

    // 将整数部分和小数部分分开处理
    const integerPart = isInteger ? number : Math.floor(number);
    const decimalPart = isInteger ? 0 : Math.round((number - integerPart) * 100);

    // 转换整数部分
    const integerResult = convertToChinese(integerPart, chineseNumbers, chineseUnits);

    // 转换小数部分
    const decimalResult = decimalPart > 0 ? convertToChinese(decimalPart, chineseNumbers, ['角', '分']) : '';

    // 拼接整数部分和小数部分
    let result = integerResult + (isInteger ? '元' : '元' + decimalResult);

    // 返回转换后的大写数字
    return result;
}

// 辅助函数，用于将数字转换为大写数字
function convertToChinese(number, chineseNumbers, chineseUnits) {
    // 将数字转换为字符串，并逆序存储
    const numberStr = number.toString().split('').reverse().join('');

    // 存储转换后的大写数字
    let result = '';

    // 遍历每个数字字符
    for (let i = 0; i < numberStr.length; i++) {
        // 获取当前数字字符对应的大写数字和单位
        const digit = chineseNumbers[parseInt(numberStr[i])];
        const unit = chineseUnits[i % 9];

        // 如果当前数字为零，则不添加大写数字和单位
        if (digit === '零') {
            result = digit + result;
        } else {
            // 添加大写数字和单位
            result = digit + unit + result;
        }
    }

    // 去除连续的零
    result = result.replace(/零+/g, '零');

    // 去除末尾的零
    result = result.replace(/零$/, '');

    return result;
}

// 导出函数，以便其他页面可以使用
export default toChineseNumber;
